package flc.ast.bean;

import androidx.annotation.Keep;

import java.util.List;

@Keep
public class ResumeBean {
    private String templateName = "baseResumeTemplate";
    private List<Module> resumeData;

    public ResumeBean() {
    }

    public ResumeBean(List<Module> resumeData) {
        this.resumeData = resumeData;
    }

    public ResumeBean(String templateName, List<Module> resumeData) {
        this.templateName = templateName;
        this.resumeData = resumeData;
    }

    public String getTemplateName() {
        return templateName;
    }

    public void setTemplateName(String templateName) {
        this.templateName = templateName;
    }

    public List<Module> getResumeData() {
        return resumeData;
    }

    public void setResumeData(List<Module> resumeData) {
        this.resumeData = resumeData;
    }

    public static class Module {
        private String name;
        private String alias;
        private boolean isShow;
        private Object data;

        public Module() {
        }

        public Module(String name, String alias, boolean isShow, Object data) {
            this.name = name;
            this.alias = alias;
            this.isShow = isShow;
            this.data = data;
        }

        // Getters and Setters
        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public String getAlias() {
            return alias;
        }

        public void setAlias(String alias) {
            this.alias = alias;
        }

        public boolean isShow() {
            return isShow;
        }

        public void setShow(boolean show) {
            isShow = show;
        }

        public Object getData() {
            return data;
        }

        public void setData(Object data) {
            this.data = data;
        }
    }

    public static class BaseInfoData {
        private String name;
        private String sex;
        private String dateOfBirth;
        private boolean isBorth2Age;
        private String avatar;
        private boolean isShowAvatar;
        private String phone;
        private String email;
        private String maritalStatus;
        private String height;
        private String weight;
        private String nation;
        private String nativePlace;
        private String politicalStatus;
        private List<CustomInfo> customInfo;

        public BaseInfoData() {
        }

        public BaseInfoData(String name, String sex, String dateOfBirth, boolean isBorth2Age, String avatar, boolean isShowAvatar, String phone, String email, String maritalStatus, String height, String weight, String nation, String nativePlace, String politicalStatus, List<CustomInfo> customInfo) {
            this.name = name;
            this.sex = sex;
            this.dateOfBirth = dateOfBirth;
            this.isBorth2Age = isBorth2Age;
            this.avatar = avatar;
            this.isShowAvatar = isShowAvatar;
            this.phone = phone;
            this.email = email;
            this.maritalStatus = maritalStatus;
            this.height = height;
            this.weight = weight;
            this.nation = nation;
            this.nativePlace = nativePlace;
            this.politicalStatus = politicalStatus;
            this.customInfo = customInfo;
        }

        // Getters and Setters
        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public String getSex() {
            return sex;
        }

        public void setSex(String sex) {
            this.sex = sex;
        }

        public String getDateOfBirth() {
            return dateOfBirth;
        }

        public void setDateOfBirth(String dateOfBirth) {
            this.dateOfBirth = dateOfBirth;
        }

        public boolean isBorth2Age() {
            return isBorth2Age;
        }

        public void setBorth2Age(boolean borth2Age) {
            isBorth2Age = borth2Age;
        }

        public String getAvatar() {
            return avatar;
        }

        public void setAvatar(String avatar) {
            this.avatar = avatar;
        }

        public boolean isShowAvatar() {
            return isShowAvatar;
        }

        public void setShowAvatar(boolean showAvatar) {
            isShowAvatar = showAvatar;
        }

        public String getPhone() {
            return phone;
        }

        public void setPhone(String phone) {
            this.phone = phone;
        }

        public String getEmail() {
            return email;
        }

        public void setEmail(String email) {
            this.email = email;
        }

        public String getMaritalStatus() {
            return maritalStatus;
        }

        public void setMaritalStatus(String maritalStatus) {
            this.maritalStatus = maritalStatus;
        }

        public String getHeight() {
            return height;
        }

        public void setHeight(String height) {
            this.height = height;
        }

        public String getWeight() {
            return weight;
        }

        public void setWeight(String weight) {
            this.weight = weight;
        }

        public String getNation() {
            return nation;
        }

        public void setNation(String nation) {
            this.nation = nation;
        }

        public String getNativePlace() {
            return nativePlace;
        }

        public void setNativePlace(String nativePlace) {
            this.nativePlace = nativePlace;
        }

        public String getPoliticalStatus() {
            return politicalStatus;
        }

        public void setPoliticalStatus(String politicalStatus) {
            this.politicalStatus = politicalStatus;
        }

        public List<CustomInfo> getCustomInfo() {
            return customInfo;
        }

        public void setCustomInfo(List<CustomInfo> customInfo) {
            this.customInfo = customInfo;
        }
    }

    public static class CustomInfo {
        private String key;
        private String value;

        public CustomInfo() {
        }

        public CustomInfo(String key, String value) {
            this.key = key;
            this.value = value;
        }

        public String getKey() {
            return key;
        }

        public void setKey(String key) {
            this.key = key;
        }

        public String getValue() {
            return value;
        }

        public void setValue(String value) {
            this.value = value;
        }
    }

    public static class JobData {
        private String targetJob;
        private String targetCity;
        private String targetSalary;
        private String entryTime;

        public JobData() {

        }

        public JobData(String targetJob, String targetCity, String targetSalary, String entryTime) {
            this.targetJob = targetJob;
            this.targetCity = targetCity;
            this.targetSalary = targetSalary;
            this.entryTime = entryTime;
        }

        // Getters and Setters
        public String getTargetJob() {
            return targetJob;
        }

        public void setTargetJob(String targetJob) {
            this.targetJob = targetJob;
        }

        public String getTargetCity() {
            return targetCity;
        }

        public void setTargetCity(String targetCity) {
            this.targetCity = targetCity;
        }

        public String getTargetSalary() {
            return targetSalary;
        }

        public void setTargetSalary(String targetSalary) {
            this.targetSalary = targetSalary;
        }

        public String getEntryTime() {
            return entryTime;
        }

        public void setEntryTime(String entryTime) {
            this.entryTime = entryTime;
        }
    }

    public static class ApplicationInfoData {
        private String applySchool;
        private String applyMajor;
        private String scoreName;
        private List<ScoreItem> scoreList;

        public ApplicationInfoData() {
        }

        public ApplicationInfoData(String applySchool, String applyMajor, String scoreName, List<ScoreItem> scoreList) {
            this.applySchool = applySchool;
            this.applyMajor = applyMajor;
            this.scoreName = scoreName;
            this.scoreList = scoreList;
        }

        // Getters and Setters
        public String getApplySchool() {
            return applySchool;
        }

        public void setApplySchool(String applySchool) {
            this.applySchool = applySchool;
        }

        public String getApplyMajor() {
            return applyMajor;
        }

        public void setApplyMajor(String applyMajor) {
            this.applyMajor = applyMajor;
        }

        public String getScoreName() {
            return scoreName;
        }

        public void setScoreName(String scoreName) {
            this.scoreName = scoreName;
        }

        public List<ScoreItem> getScoreList() {
            return scoreList;
        }

        public void setScoreList(List<ScoreItem> scoreList) {
            this.scoreList = scoreList;
        }
    }

    public static class ScoreItem {
        private String key;
        private int value;

        public ScoreItem() {
        }

        public ScoreItem(String key, int value) {
            this.key = key;
            this.value = value;
        }

        public String getKey() {
            return key;
        }

        public void setKey(String key) {
            this.key = key;
        }

        public int getValue() {
            return value;
        }

        public void setValue(int value) {
            this.value = value;
        }
    }

    public static class EducationInfoData {
        private List<EducationExperience> educationExperienceList;

        public EducationInfoData() {
        }

        public EducationInfoData(List<EducationExperience> educationExperienceList) {
            this.educationExperienceList = educationExperienceList;
        }

        public List<EducationExperience> getEducationExperienceList() {
            return educationExperienceList;
        }

        public void setEducationExperienceList(List<EducationExperience> educationExperienceList) {
            this.educationExperienceList = educationExperienceList;
        }
    }

    public static class EducationExperience {
        private String schoolName;
        private String major;
        private String startTime;
        private String endTime;
        private String qualification;
        private List<DetailItem> detailList;

        public EducationExperience() {
        }

        public EducationExperience(String schoolName, String major, String startTime, String endTime, String qualification, List<DetailItem> detailList) {
            this.schoolName = schoolName;
            this.major = major;
            this.startTime = startTime;
            this.endTime = endTime;
            this.qualification = qualification;
            this.detailList = detailList;
        }

        // Getters and Setters
        public String getSchoolName() {
            return schoolName;
        }

        public void setSchoolName(String schoolName) {
            this.schoolName = schoolName;
        }

        public String getMajor() {
            return major;
        }

        public void setMajor(String major) {
            this.major = major;
        }

        public String getStartTime() {
            return startTime;
        }

        public void setStartTime(String startTime) {
            this.startTime = startTime;
        }

        public String getEndTime() {
            return endTime;
        }

        public void setEndTime(String endTime) {
            this.endTime = endTime;
        }

        public String getQualification() {
            return qualification;
        }

        public void setQualification(String qualification) {
            this.qualification = qualification;
        }

        public List<DetailItem> getDetailList() {
            return detailList;
        }

        public void setDetailList(List<DetailItem> detailList) {
            this.detailList = detailList;
        }
    }

    public static class WorkExperienceData {
        private List<WorkExperience> workExperienceList;

        public WorkExperienceData() {
        }

        public WorkExperienceData(List<WorkExperience> workExperienceList) {
            this.workExperienceList = workExperienceList;
        }

        public List<WorkExperience> getWorkExperienceList() {
            return workExperienceList;
        }

        public void setWorkExperienceList(List<WorkExperience> workExperienceList) {
            this.workExperienceList = workExperienceList;
        }
    }

    public static class WorkExperience {
        private String companyName;
        private String job;
        private String startTime;
        private String endTime;
        private List<DetailItem> detailList;

        public WorkExperience() {
        }

        public WorkExperience(String companyName, String job, String startTime, String endTime, List<DetailItem> detailList) {
            this.companyName = companyName;
            this.job = job;
            this.startTime = startTime;
            this.endTime = endTime;
            this.detailList = detailList;
        }

        // Getters and Setters
        public String getCompanyName() {
            return companyName;
        }

        public void setCompanyName(String companyName) {
            this.companyName = companyName;
        }

        public String getJob() {
            return job;
        }

        public void setJob(String job) {
            this.job = job;
        }

        public String getStartTime() {
            return startTime;
        }

        public void setStartTime(String startTime) {
            this.startTime = startTime;
        }

        public String getEndTime() {
            return endTime;
        }

        public void setEndTime(String endTime) {
            this.endTime = endTime;
        }

        public List<DetailItem> getDetailList() {
            return detailList;
        }

        public void setDetailList(List<DetailItem> detailList) {
            this.detailList = detailList;
        }
    }

    public static class ProjectExperienceData {
        private List<ProjectExperience> projectExperienceList;

        public ProjectExperienceData() {
        }

        public ProjectExperienceData(List<ProjectExperience> projectExperienceList) {
            this.projectExperienceList = projectExperienceList;
        }

        public List<ProjectExperience> getProjectExperienceList() {
            return projectExperienceList;
        }

        public void setProjectExperienceList(List<ProjectExperience> projectExperienceList) {
            this.projectExperienceList = projectExperienceList;
        }
    }

    public static class ProjectExperience {
        private String projectName;
        private String roleName;
        private String startTime;
        private String endTime;
        private List<DetailItem> detailList;

        public ProjectExperience() {
        }

        public ProjectExperience(String projectName, String roleName, String startTime, String endTime, List<DetailItem> detailList) {
            this.projectName = projectName;
            this.roleName = roleName;
            this.startTime = startTime;
            this.endTime = endTime;
            this.detailList = detailList;
        }

        // Getters and Setters
        public String getProjectName() {
            return projectName;
        }

        public void setProjectName(String projectName) {
            this.projectName = projectName;
        }

        public String getRoleName() {
            return roleName;
        }

        public void setRoleName(String roleName) {
            this.roleName = roleName;
        }

        public String getStartTime() {
            return startTime;
        }

        public void setStartTime(String startTime) {
            this.startTime = startTime;
        }

        public String getEndTime() {
            return endTime;
        }

        public void setEndTime(String endTime) {
            this.endTime = endTime;
        }

        public List<DetailItem> getDetailList() {
            return detailList;
        }

        public void setDetailList(List<DetailItem> detailList) {
            this.detailList = detailList;
        }
    }

    public static class InternShipExperienceData {
        private List<InternShipExperience> internShipExperienceList;

        public InternShipExperienceData() {
        }

        public InternShipExperienceData(List<InternShipExperience> internShipExperienceList) {
            this.internShipExperienceList = internShipExperienceList;
        }

        public List<InternShipExperience> getInternShipExperienceList() {
            return internShipExperienceList;
        }

        public void setInternShipExperienceList(List<InternShipExperience> internShipExperienceList) {
            this.internShipExperienceList = internShipExperienceList;
        }
    }

    public static class InternShipExperience {
        private String companyName;
        private String job;
        private String startTime;
        private String endTime;
        private List<DetailItem> detailList;

        public InternShipExperience() {
        }

        public InternShipExperience(String companyName, String job, String startTime, String endTime, List<DetailItem> detailList) {
            this.companyName = companyName;
            this.job = job;
            this.startTime = startTime;
            this.endTime = endTime;
            this.detailList = detailList;
        }

        // Getters and Setters
        public String getCompanyName() {
            return companyName;
        }

        public void setCompanyName(String companyName) {
            this.companyName = companyName;
        }

        public String getJob() {
            return job;
        }

        public void setJob(String job) {
            this.job = job;
        }

        public String getStartTime() {
            return startTime;
        }

        public void setStartTime(String startTime) {
            this.startTime = startTime;
        }

        public String getEndTime() {
            return endTime;
        }

        public void setEndTime(String endTime) {
            this.endTime = endTime;
        }

        public List<DetailItem> getDetailList() {
            return detailList;
        }

        public void setDetailList(List<DetailItem> detailList) {
            this.detailList = detailList;
        }
    }

    public static class SchoolExperienceData {
        private List<SchoolExperience> schoolExperienceList;

        public SchoolExperienceData() {
        }

        public SchoolExperienceData(List<SchoolExperience> schoolExperienceList) {
            this.schoolExperienceList = schoolExperienceList;
        }

        public List<SchoolExperience> getSchoolExperienceList() {
            return schoolExperienceList;
        }

        public void setSchoolExperienceList(List<SchoolExperience> schoolExperienceList) {
            this.schoolExperienceList = schoolExperienceList;
        }
    }

    public static class SchoolExperience {
        private String projectName;
        private String roleName;
        private String startTime;
        private String endTime;
        private List<DetailItem> detailList;

        public SchoolExperience() {
        }

        public SchoolExperience(String projectName, String roleName, String startTime, String endTime, List<DetailItem> detailList) {
            this.projectName = projectName;
            this.roleName = roleName;
            this.startTime = startTime;
            this.endTime = endTime;
            this.detailList = detailList;
        }

        // Getters and Setters
        public String getProjectName() {
            return projectName;
        }

        public void setProjectName(String projectName) {
            this.projectName = projectName;
        }

        public String getRoleName() {
            return roleName;
        }

        public void setRoleName(String roleName) {
            this.roleName = roleName;
        }

        public String getStartTime() {
            return startTime;
        }

        public void setStartTime(String startTime) {
            this.startTime = startTime;
        }

        public String getEndTime() {
            return endTime;
        }

        public void setEndTime(String endTime) {
            this.endTime = endTime;
        }

        public List<DetailItem> getDetailList() {
            return detailList;
        }

        public void setDetailList(List<DetailItem> detailList) {
            this.detailList = detailList;
        }
    }

    public static class SkillData {
        private List<DetailItem> detailList;
        private List<SkillItem> skillList;

        public SkillData() {
        }

        public SkillData(List<DetailItem> detailList, List<SkillItem> skillList) {
            this.detailList = detailList;
            this.skillList = skillList;
        }

        // Getters and Setters
        public List<DetailItem> getDetailList() {
            return detailList;
        }

        public void setDetailList(List<DetailItem> detailList) {
            this.detailList = detailList;
        }

        public List<SkillItem> getSkillList() {
            return skillList;
        }

        public void setSkillList(List<SkillItem> skillList) {
            this.skillList = skillList;
        }
    }

    public static class SkillItem {
        private String name;
        private String type;
        private int levelPercentage;
        private String levelText;

        public SkillItem() {
        }

        public SkillItem(String name, String type, int levelPercentage, String levelText) {
            this.name = name;
            this.type = type;
            this.levelPercentage = levelPercentage;
            this.levelText = levelText;
        }

        // Getters and Setters
        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public String getType() {
            return type;
        }

        public void setType(String type) {
            this.type = type;
        }

        public int getLevelPercentage() {
            return levelPercentage;
        }

        public void setLevelPercentage(int levelPercentage) {
            this.levelPercentage = levelPercentage;
        }

        public String getLevelText() {
            return levelText;
        }

        public void setLevelText(String levelText) {
            this.levelText = levelText;
        }
    }

    public static class CertificateData {
        private List<DetailItem> detailList;
        private List<CertificateItem> certificateList;

        public CertificateData() {
        }

        public CertificateData(List<DetailItem> detailList, List<CertificateItem> certificateList) {
            this.detailList = detailList;
            this.certificateList = certificateList;
        }

        // Getters and Setters
        public List<DetailItem> getDetailList() {
            return detailList;
        }

        public void setDetailList(List<DetailItem> detailList) {
            this.detailList = detailList;
        }

        public List<CertificateItem> getCertificateList() {
            return certificateList;
        }

        public void setCertificateList(List<CertificateItem> certificateList) {
            this.certificateList = certificateList;
        }
    }

    public static class CertificateItem {

        private String text;

        public CertificateItem() {
        }

        public CertificateItem(String text) {
            this.text = text;
        }

        public String getText() {
            return text;
        }

        public void setText(String text) {
            this.text = text;
        }
    }

    public static class SelfEvaluationData {
        private List<DetailItem> detailList;

        public SelfEvaluationData() {
        }

        public SelfEvaluationData(List<DetailItem> detailList) {
            this.detailList = detailList;
        }

        public List<DetailItem> getDetailList() {
            return detailList;
        }

        public void setDetailList(List<DetailItem> detailList) {
            this.detailList = detailList;
        }
    }

    public static class HobbyData {
        private List<DetailItem> detailList;
        private List<HobbyItem> hobbyList;

        public HobbyData() {
        }

        public HobbyData(List<DetailItem> detailList, List<HobbyItem> hobbyList) {
            this.detailList = detailList;
            this.hobbyList = hobbyList;
        }

        // Getters and Setters
        public List<DetailItem> getDetailList() {
            return detailList;
        }

        public void setDetailList(List<DetailItem> detailList) {
            this.detailList = detailList;
        }

        public List<HobbyItem> getHobbyList() {
            return hobbyList;
        }

        public void setHobbyList(List<HobbyItem> hobbyList) {
            this.hobbyList = hobbyList;
        }
    }

    public static class HobbyItem {
        private String text;

        public HobbyItem() {
        }

        public HobbyItem(String text) {
            this.text = text;
        }

        public String getText() {
            return text;
        }

        public void setText(String text) {
            this.text = text;
        }
    }

    public static class CustomModuleData {
        private List<DetailItem> detailList;

        public CustomModuleData() {
        }

        public CustomModuleData(List<DetailItem> detailList) {
            this.detailList = detailList;
        }

        public List<DetailItem> getDetailList() {
            return detailList;
        }

        public void setDetailList(List<DetailItem> detailList) {
            this.detailList = detailList;
        }
    }

    public static class DetailItem {

        private String text;

        public DetailItem() {
        }

        public DetailItem(String text) {
            this.text = text;
        }

        public String getText() {
            return text;
        }

        public void setText(String text) {
            this.text = text;
        }
    }
}